package network

import (
	"fmt"
	"strings"

	"gitee.com/liumou_site/logger"
)

// GetUseCon 获取当前活动的网络连接信息。
func (c *NmcliConnectionStruct) GetUseCon() []string {
	cmd := "nmcli connection show --active"
	c.cmd.RunShell(cmd)
	c.Err = c.cmd.Err
	if c.cmd.Err != nil {
		logger.Error("无法获取当前连接配置,执行的命令: ", cmd)
		return nil
	}
	sp := strings.Split(c.cmd.Strings, "\n")
	if len(sp) == 0 {
		logger.Error("命令执行成功,但无法获取内容,请检查nmcli服务")
		c.Err = fmt.Errorf("命令执行成功,但无法获取内容,请检查nmcli服务")
	}
	return sp
}

// GetConList 获取当前系统中所有网络连接的名称列表。
func (c *NmcliConnectionStruct) GetConList() {
	cmd := "nmcli connection show"
	c.cmd.RunShell(cmd)
	if c.cmd.Err != nil {
		c.Err = c.cmd.Err
		logger.Error("无法获取当前连接配置,执行的命令: ", cmd)
		return
	}
	sp := strings.Split(c.cmd.Strings, "\n")
	if len(sp) == 0 {
		logger.Error("命令执行成功,但无法获取内容,请检查nmcli服务")
		c.Err = fmt.Errorf("命令执行成功,但无法获取内容,请检查nmcli服务")
		return
	}
	c.cmd.Column(1, "")
	if c.Err != nil {
		logger.Error("数据截取失败")
		return
	}
	cl := strings.Split(c.cmd.Strings, "\n")
	if len(cl) == 0 {
		c.Err = fmt.Errorf("无法获取连接列表")
		return
	}
	for _, v := range cl {
		if v != "NAME" {
			c.ConList = append(c.ConList, v)
		}
	}
}

// GetConDnsList 获取指定连接的DNS列表
func (c *NmcliConnectionStruct) GetConDnsList(con string) {
	cmd := "nmcli connection show " + con
	c.cmd.RunShell(cmd)
	if c.cmd.Err != nil {
		c.Err = c.cmd.Err
		logger.Error("无法获取当前连接配置,执行的命令: ", cmd)
		return
	}
}
